Cryptography is a well-known field. It generally involves transformations of data into another form using a cryptographic algorithm and an encryption key. The recipient of a message including the encrypted data must decrypt the encrypted message, using the same key or a different key in the case of private key/public key cryptography, in order to access the data. Cryptography is widely used in the field of digital rights management (DRM) which refers to various content protection schemes used by digital content (such as audio and video material) providers to restrict usage of digital media and devices to authorized persons. A popular DRM scheme is the Apple FairPlay system, used by the Apple on-line iTunes store. Another is Microsoft's Windows Media DRM. These systems use strong cryptography to protect media such as digital files from being viewed except by hardware or software that have the proper credentials.
For most DRM and other cryptographic applications, a trusted media player (a computer program) contains or is supplied with a decryption key used to decrypt and play the protected media content. This decryption key must be secret and preferably inaccessible to the user. In the context of DRM, the user is typically one of many consumers and is not a “trusted individual” in cryptography terms. The reason for this is that finding this decryption key would allow someone, such as a user lacking integrity, to decrypt the data without restriction, defeating the DRM protection. This poses a major problem because a “trusted” media player, such as the Apple iPod client software, often runs on an untrusted (insecure) platform, which is the consumer's Apple iPod device (player) for instance. This device also may be the user's home computer which is also an untrusted device in the sense that it is solely under control of the untrusted user. Thus keeping decryption keys used by the trusted media player software from being accessible to the user is a major challenge faced by DRM.
Many DRM schemes have failed to operate properly by neglecting to keep their key safe.
The threat models used in traditional computer enabled cryptography are referred to as “black box attack models”. In this type of attack, the attacker is assumed to have control over the decryption; however, the actual key and the details of the decryption code (software) execution are unknown. Thus a device (platform) on which the cryptographic software is running is not internally accessible to the attacker. Thus in the conventional black box attack model, the attacker has at most access to the input and output of the cryptographic program. In contrast, in the DRM situation the more challenging environment is referred to as the “white box attack model”. This attack model is the strongest conceivable one in terms of the advantages to the attacker because the attacker is assumed to have fall access to the decryption software and fall control over its execution environment (the platform), including being able to access processor memory during execution of the decryption algorithm. In the white box attack model, the attacker has control of the execution environment. This includes arbitrary trace execution, examining sub-results and access to keys located in memory as well as the ability to perform arbitrary static analysis on the software and altering results of sub-computations for perturbation analysis. Hence the goal of white box cryptography is to make key extraction difficult even in the presence of such access by the attacker. The typical media player device and its software are under control of the user, who is also the attacker here. That is, the black box attack model assumes in a communication that the endpoints are both trusted entities. In contrast in the white box attack, the attack comes from the inside where the attacker is typically the user of the software or a virus installed by him on the device running the software.
Hence white box cryptography is well-known and aims at solving the problem of how to implement a cryptographic algorithm in computer software such that the decryption key cannot be extracted by a white box attack (e.g., white box cryptography provides a secured computation). This is typically done using software protection methods such as code obfuscation and tamper resistance. Code obfuscation protects the cryptographic software program against reverse engineering by transforming the program into a functionally and semantically equivalent one that is harder for an attacker to understand. In terms of tamper resistance, the goal is to protect against an attacker who tries to make a modification to a software program, such that the program has a particular different functionality, for instance a routine for implementing access and permission control. The problem of white box cryptography is relevant for a content provider implementing a DRM scheme who broadcasts or downloads encrypted copy righted or proprietary content and wishes to prevent an authorized user from extracting and (illegally) putting the decryption key for instance in a public place, such as posted on the Internet. An implementation of a cryptographic algorithm that tries to resist a white box attack on its key is called a “white box implementation”. One way to do this for instance is with modifications to well-known block ciphers such as AES and DES which hides (obfuscates) the key of the implemented block cipher in a large collection of lookup tables. As a result, a typical white box implementation can be viewed as standalone cryptographic algorithm, the key of which is given only by the collection of lookup tables.
A typical application is a DRM client device implementing software that has to validate conditions in a DRM license before it decrypts the corresponding content. The content for instance may be encrypted by AES, which is a well-known cipher, since this block cipher is as indicated above known to have a white box implementation. One version of this white box block cipher implementation adds arbitrary lookup tables without changing the cryptographic function that it implements. Hence the decryption algorithm is implemented by a white box implementation consisting of a collection of lookup tables (the white box key) and a decryption routine that uses the white box key to decrypt the content. Note that this description of a white box implementation of AES and DES encryption is merely illustrative. In this context, DES and AES are symmetric key ciphers. It is possible also to have a white box implementation of an asymmetric (public key) cipher, such as the RSA public key-type ciphers.
None of these white box cryptography techniques have been proven to be secure; however, in a practical sense they certainly enhance the security of DRM schemes. White box cryptography, while not proven to be secure, does offer useful levels of security in the form of additional protection, especially suitable in the commercial world of distribution of content such as digital and audio files. (This may not be adequate security for high-level security information such as government communications and financial transactions.)
As understood from the above, white box solutions are inherently significantly bulkier (requiring more code and hence more storage) and thus slower to execute on a conventional processor than black box cryptography algorithms. These drawbacks may be offset by advantages justifying the white box solutions in some applications, such as the DRM situation. Software-only white box “key hiding” components may be cost effectively installed and updated periodically. White box implementations are already successfully used commercially, as outlined above.
The chief drawback of any current white box solution is the bulkiness (length) of the associated software code and the resulting extended computational time required due to the complexity of the white box solutions which is inherent in their obfuscation approach. This has been found to be a barrier to use of white box cryptography. The present inventors have identified that one way to make white box cryptography more attractive and useful is to reduce overall code length and computational time of the cryptographic process.